package 简单.模拟;

/**
 * 给你一个大小为 n x n 的整数矩阵 grid 。
 * 生成一个大小为 (n - 2) x (n - 2) 的整数矩阵  maxLocal ，并满足：
 * maxLocal[i][j] 等于 grid 中以 i + 1 行和 j + 1 列为中心的 3 x 3 矩阵中的 最大值 。
 * 换句话说，我们希望找出 grid 中每个 3 x 3 矩阵中的最大值。
 * 返回生成的矩阵。
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/largest-local-values-in-a-matrix
 */
public class 矩阵中的局部最大值_2373 {

    public static void main(String[] args) {

    }

    int[][] direction = {{-1, 0}, {-1, -1}, {-1, 1}, {0, -1}, {0, 1}, {1, 0}, {1, 1}, {1, -1}};

    /**
     * 模拟
     */
    public int[][] largestLocal(int[][] grid) {
        int[][] maxLocal = new int[grid.length - 2][grid[0].length - 2];

        for (int i = 0; i < maxLocal.length; i++) {
            for (int j = 0; j < maxLocal[0].length; j++) {
                maxLocal[i][j] = grid[i + 1][j + 1];
                for (int[] direct : direction) {
                    maxLocal[i][j] = Math.max(maxLocal[i][j],
                            grid[i + 1 + direct[0]][j + 1 + direct[1]]);
                }
            }
        }

        return maxLocal;
    }

}
